package com.bigintegerdemo;

import java.math.BigDecimal;
import java.math.BigInteger;

/**
 * @Auther: shiquan
 * @Date: 2024/10/24 - 10 - 24 -17:55
 */
public class BigIntegerDemo3 {

    public static void main(String[] args) {
        /**
         * 构造方法获取BigDecimal对象
         * public BigDecimal(String val)
         * 静态方法获取BigDecimal对象 public static BigDecimal valueOf(long val)
         *
         */

        //1 通过传递double类型的小数来创建对象
       // BigDecimal bd1 = new BigDecimal(0.01);
      //  BigDecimal bd2 = new BigDecimal(0.09);
       // System.out.println(bd1);   //不准确
        //System.out.println(bd2);   //不准确

        //2 通过传递字符串表示的小数来创建对象
        /*BigDecimal bd3 = new BigDecimal("0.01");
        BigDecimal bd4 = new BigDecimal("0.09");
        BigDecimal bd5 = bd3.add(bd4);
        System.out.println(bd3);
        System.out.println(bd4);
        System.out.println(bd5); //0.10*/

        //3通过静态方法获取对象
       /* BigDecimal bd6 = BigDecimal.valueOf(10);
        BigDecimal bd7 = BigDecimal.valueOf(10);
        System.out.println(bd6.equals(bd7)); //对   同一个对象*/

        //细节  如果要表示的数字不大 没有超过double范围   建议静态方法
        // 如果要表示的数字比较大  建议通过构造方法
        //如果我们传递的是0~10之间的整数  包含0 包含10  方法ui返回创建好的对象 不会重新new

        //1 加法
        BigDecimal bd1 = BigDecimal.valueOf(10.0);
        BigDecimal bd2 = BigDecimal.valueOf(3.0);
        BigDecimal result = bd1.add(bd2);
        System.out.println(result);

        //2 减法
        BigDecimal bd4 = bd1.subtract(bd2);
        System.out.println(bd4);  //12.0

        //3 乘法
        BigDecimal bd5 = bd1.multiply(bd2);
        System.out.println(bd5); //20

        //4除法
        BigDecimal bd6 = bd1.divide(bd2,2,BigDecimal.ROUND_HALF_UP);
        System.out.println(bd6); //3.33    scale 小数点后2数





    }
}
